package generics;

public class TransferObject3<T> {
    private T data;
    public T getData() {
        return data;
    }
    public void setData(T data) {
        this.data = data;
    }
    //泛型可以约束方法的参数或返回值类型
    public T doSome(T arg){//参数和返回值必须是类上指定的泛型类型
        return arg;
    }

    /**
     * 可以为方法单独定义泛型，常见情况:方法参数与返回值类型相同即可这样的需求
     * @param arg
     * @param <E>
     * @return
     */
    public<E> E doSome1(E arg){//为方法单独定义泛型，参数与返回值类型相同即可
        return arg;
    }
    //静态方法上不能直接使用类上定义的泛型(静态资源加载优先级更高)，因此只能自行定义
    public static<T> T doSome2(T arg){
        return arg;
    }
}
